home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / komei4 / komei4.exe / ICON / C_3B3.HD6 < prev    next >
Text File  |  1993-06-04  |  12KB  |  912 lines

  1. ds_name        db    'MOJ\C_3B',0
  2.  
  3. ;----------------------------------
  4. ; パレットノートに関するモジュール
  5. ; 右下の5つのアイコンと数字
  6.  
  7. dt1:
  8.     call    sub_edi
  9.     dw    0
  10.     db    'CONTEN',0
  11.  
  12. ;-------------------------
  13. paint_wd:
  14.     SET_P    dt1
  15.  
  16.                 ;パレット0 の情報獲得
  17.  
  18.     call palon0
  19.     call pal0_get
  20.  
  21.                 ;念の為にパレットブックの制作
  22.  
  23.     call b_note
  24.  
  25.                 ;ユーザーアイコンのロードとセット
  26.  
  27.     call u_icon_set
  28.     call    n_load        ;パレットノートのロード
  29.  
  30.     mov    cx,1        ;パレット番号
  31.     mov    bx,00101000b    ; 画面1のパレット/画面 0 が上
  32.     mov    ah,100
  33.     mov    al,33
  34.     call    komei        ;palet page -> palet
  35.  
  36.     call    dd_pal
  37.     mov    word ptr [edx],1
  38.  
  39. re_paint:
  40.  
  41.     WD_CLS 0
  42.  
  43.     BOX boxdt,8
  44.     call di_ucon2        ;icon3
  45.     call u_con        ;rom_con
  46.     MOZI mozidt
  47.     BOX    boxdt2,1
  48.     MOZI    mozidt3
  49.  
  50.     ret        ; RET TO KOMEI
  51.  
  52. re_paint1:
  53.     call    kesu_ms
  54.     jmp    re_paint
  55.  
  56. ;***************************
  57.  
  58. be_called:        ;他のモジュールから呼ばれる時の入口。
  59.  
  60.     YOMU    ax,300
  61.     cmp    ax,400
  62.     je    neru
  63.     cmp    ax,500
  64.     je    okiru
  65.      ret
  66. neru:
  67.     WD_ERZ 1
  68.     WD_ERZ 0
  69.     WD_LEFT
  70.     ret
  71. okiru:
  72.     WD_WANT
  73.     jmp    re_paint
  74.  
  75. ;**************************
  76. rom_con:
  77.     mov ah,100
  78.     mov al,29
  79.     jmp komei1
  80. ;---------------------
  81. u_con:
  82.     mov    ah,2
  83.     mov    al,0
  84.     call    MOUSE
  85.  
  86.     mov ah,100
  87.     mov al,30
  88.     call komei1
  89.  
  90.     mov    ah,2
  91.     mov    al,1
  92.     call    MOUSE
  93.     ret
  94.  
  95.  
  96. ;**********************************
  97. u_icon_set:
  98.  
  99.      call e_data1
  100.      call f_size
  101.      call ds_size
  102.      mov [esi],ecx
  103.  
  104.     RAM0 edi
  105.     call e_data1
  106.     call load
  107.  
  108.  
  109.     call ds_size
  110.     mov ecx,[esi]
  111.  
  112.     push es
  113.     mov ax,114h
  114.     mov es,ax
  115.  
  116.     mov edi,1024*3+512*3*64
  117.  
  118.     RAM0 ebx
  119.     mov esi,ebx
  120.     rep movsb
  121.     pop es
  122.  
  123.     mov    ah,100
  124.     mov    al,36        ;2c icon data の場所
  125.  
  126.     mov    dx,114h
  127.     mov edi,1024*3+512*3*64
  128.     call    komei
  129.  
  130.     ret
  131.  
  132. ;**************************************
  133. e_data1:
  134.     call sub_edx
  135.     db 'ICON\HTG\NO1.HTG',0
  136.  
  137. ds_size:
  138.     call sub_esi
  139.     dd    ?
  140.  
  141. f_size:
  142.     M_BYTESU
  143.  
  144. load:
  145.     M_LOAD
  146. save:
  147.     M_SAVE
  148.  
  149. p_call:
  150.  
  151.     M_P_CALL
  152. p_set:
  153.     M_P_SET
  154.  
  155. ;-----------------------------
  156.  
  157.     ;S_NO,X1,Y1,COL,off_x,off_y,NO,no,no,0
  158.  
  159. di_ucon2:
  160.     call sub_edi
  161.     dw 0,1,1,1,33,0,41,37,36,38,10,12,0
  162.  
  163. ;-----------------------------------
  164.  
  165.  
  166. ;*****************************
  167. mouse_in:
  168.       cmp ch,0
  169.       jne mouseck
  170.       ret
  171.  
  172. mou_dt:
  173.     call sub_edi
  174.     dw    0
  175.     dw    0
  176.  
  177. mouseck:
  178.  
  179.     call mou_dt
  180.     mov [edi],cx
  181.  
  182.      MOU boxdt,8
  183.      cmp bx,1
  184.      je short mck1             
  185.      ret
  186. mck1:
  187.      cmp ax,2
  188.      je find2
  189.  
  190.      cmp ax,3    ;palet  <-  palet note
  191.      je find4
  192.  
  193.      cmp ax,4    ;palet  ->  palet note
  194.      je find3
  195.  
  196.     cmp ax,5
  197.     je note_save0
  198.  
  199.     cmp ax,6
  200.     je n_load
  201.  
  202.     cmp ax,7
  203.     jge find5
  204.  
  205.      ret
  206.  
  207. ;*************
  208. note_save0:
  209.  
  210.     BOX    boxdt3,1
  211.     MOZI    mozidt2
  212.  
  213.     BOX    boxdt,6
  214.     call    di_con_01
  215.     call    u_con
  216.     call    kesu_ms
  217.  
  218.  
  219. ok_no1:
  220.     call    ck_mouse
  221.     cmp    ch,1
  222.     jne    ok_no1
  223.  
  224.  
  225.     MOU    boxdt,3
  226.     cmp    bx,1
  227.     jne    ok_no1    
  228.  
  229.     cmp    ax,3
  230.     je    re_paint1
  231.     cmp    ax,2
  232.     je    ok_no1
  233.  
  234.  
  235. note_save:        ;palet note save
  236.  
  237.     RAM0 edi
  238.     mov esi,0
  239.  
  240.     push ds
  241.     push    ds
  242.     pop    es
  243.  
  244.     mov ax,114h
  245.     mov ds,ax
  246.  
  247.     mov ecx,1024*3
  248.     cld
  249.     rep movsb    ;スプライトラムよりノートを複写
  250.  
  251.     pop ds
  252.  
  253.     call    note_name
  254.  
  255.     RAM0 edi
  256.     mov ecx,1024*3
  257.     call save
  258.  
  259.     jmp    re_paint
  260.     
  261. ;***********************
  262.  
  263. note_name:
  264.     call    sub_edx
  265.     db    'ICON\P_NOTE\NO1.PNT',0
  266.  
  267.  
  268. n_load:        ;palet note load
  269.  
  270.     call    note_name
  271.  
  272.  
  273.     RAM0 edi
  274.     call load    ;note load
  275.  
  276.     RAM0 edi
  277.     mov esi,0
  278.  
  279.     xchg esi,edi
  280.  
  281.     mov ax,114h
  282.     mov es,ax
  283.  
  284.     mov ecx,1024*3
  285.     cld
  286.     rep movsb    ;スプライトラムにノートを複写
  287.  
  288.     push ds
  289.     pop es
  290.  
  291.     mov    ah,100        ;念の為に番地を知らせる
  292.     mov    al,32
  293.     mov    dx,114h
  294.     mov    edi,0
  295.     call    komei
  296.  
  297.     ret    
  298. ;***********************
  299.  
  300.  
  301.  
  302. find1:
  303.     ret
  304.  
  305.  
  306. ;**********************
  307.  
  308. find2:
  309.             ;マウスが押されている間パレットを見せる
  310.  
  311.     cld
  312.  
  313.     call mou_dt
  314.     mov ax,[edi+2]
  315.     cmp ax,0
  316.     jne f2_1    ;パレットページの変更無し
  317.  
  318.     mov word ptr [edi+2],1
  319.  
  320.  
  321. ; パレットページを読み込む    to ds_pal1
  322.  
  323.  
  324.     call from_note
  325.  
  326. f2_1:
  327.  
  328. ;念のため 今のパレットを ds_pal0 に 保存
  329.  
  330.     call palon1
  331.     call pal0_get         ;ds_pal0
  332.  
  333.  
  334.     call palon1
  335.     
  336.     call ds_pal1
  337.     mov ecx,16            ;ds_pal1 data set
  338.     call p_set1
  339.  
  340. f2_2:
  341.     call ck_mouse
  342.     cmp ch,0
  343.     jne f2_2
  344.  
  345.     call palon1
  346.  
  347.     call ds_pal0
  348.     mov    ecx,16            ;ds_pal0 data set
  349.  
  350.     call p_set1
  351.     ret
  352.  
  353.  
  354. ck_mouse:        ;mouse check macro
  355.     M_KENMS
  356.  
  357. ;***********************************
  358. di_con_01:
  359.     call    sub_edi
  360.     dw    0,1,1,1,33,0,18,33,20,0
  361.  
  362. find3:
  363.  
  364.     BOX    boxdt2,1
  365.     MOZI    mozidt1
  366.  
  367.     BOX    boxdt,6
  368.     call    di_con_01
  369.     call    u_con
  370.     call    kesu_ms
  371.  
  372.  
  373. ok_no:
  374.     call    ck_mouse
  375.     cmp    ch,1
  376.     jne    ok_no
  377.  
  378.  
  379.     MOU    boxdt,3
  380.     cmp    bx,1
  381.     jne    ok_no    
  382.     cmp    ax,3
  383.     je    re_paint1
  384.     cmp    ax,2
  385.     je    ok_no
  386.  
  387.  
  388. ;    今のパレットを パレットノートに 読み込む
  389.  
  390.     call palon1
  391.     call pal1_get         ;ds_pal1
  392.  
  393. ;palet note に 送る
  394.  
  395.     call to_note
  396.     call kesu_ms
  397.  
  398.     call    re_paint
  399.  
  400.     ret
  401.  
  402. ;**********************************
  403. find4:
  404.  
  405. ;    ds_pal1 -> ds_pal0
  406.  
  407.  
  408.     call ds_pal0
  409.     mov edi,esi
  410.  
  411.     call ds_pal1
  412.     cld
  413.  
  414.     mov ecx,3*16
  415.     rep movsb
  416.  
  417. ;--------------------
  418.     call palon1
  419.  
  420.     call ds_pal0
  421.     mov    ecx,16            ;ds_pal0 data set
  422.  
  423.     call p_set1
  424.  
  425. ;----------------
  426. ;    パレットの変わった事を知らせる
  427.  
  428.     KAKU    word ptr 300,1
  429.     CALL_P    dt1
  430.  
  431.     ret
  432.  
  433.  
  434. ;**************************************
  435.  
  436. find5:            ;10 + -
  437.  
  438.     call mou_dt
  439.     mov cx,[edi]
  440.  
  441.     cmp ax,8
  442.     je find6
  443.     
  444.     call dd_pal
  445.     mov ax,[edx]
  446.  
  447.     cmp ch,2
  448.     je gen_f5
  449.  
  450.  
  451.     cmp ax,53
  452.  
  453.     jl f5_1
  454.  
  455.     ret
  456. f5_1:
  457.     add ax,10
  458.  
  459.     jmp gokei
  460.  
  461. gen_f5:
  462.  
  463.     cmp ax,10
  464.  
  465.     jge gf5_1
  466.  
  467.     ret
  468.  
  469. gf5_1:
  470.     sub ax,10
  471.  
  472.     jmp gokei
  473.  
  474. find6:
  475.  
  476.     call dd_pal
  477.     mov ax,[edx]
  478.  
  479.     cmp ch,2
  480.     je gen_f6
  481.  
  482.  
  483.     cmp ax,63
  484.     jl f6_1
  485.     ret
  486. f6_1:
  487.     inc ax
  488.     jmp gokei
  489. gen_f6:
  490.     cmp ax,1
  491.     jge gf6_1
  492.     ret
  493. gf6_1:
  494.     dec ax
  495. gokei:
  496.     call dd_pal
  497.     mov [edx],ax
  498.     mov bl,10
  499.     div bl
  500.  
  501.     add ax,3030h
  502.     call mozidt
  503.     mov [edi+14],al
  504.     mov [edi+16],ah
  505.  
  506.     BOX boxdt1,2
  507.     MOZI mozidt
  508.  
  509.     call mou_dt
  510.     mov word ptr [edi+2],0
  511.     
  512.     call kesu_ms
  513.  
  514.  
  515.             ;マウスが押されている間パレットを見せる
  516.  
  517.     cld
  518.  
  519.     call mou_dt
  520.     mov ax,[edi+2]
  521.     cmp ax,0
  522.     jne t2_1    ;パレットページの変更無し
  523.  
  524.     mov word ptr [edi+2],1
  525.  
  526.  
  527. ; パレットページを読み込む    to ds_pal1
  528.  
  529.  
  530.     call from_note
  531.  
  532. t2_1:
  533.  
  534. ;念のため 今のパレットを ds_pal0 に 保存
  535.  
  536.     call palon1
  537.     call pal0_get         ;ds_pal0
  538.  
  539.  
  540.     call palon1
  541.     
  542.     call ds_pal1
  543.     mov ecx,16            ;ds_pal1 data set
  544.     call p_set1
  545.     mov    ecx,0
  546. t2_2:
  547.     inc    ecx
  548.     cmp    ecx,500000/2
  549.     jbe    t2_2
  550.  
  551.  
  552.     call palon1
  553.  
  554.     call ds_pal0
  555.     mov    ecx,16            ;ds_pal0 data set
  556.  
  557.     call p_set1
  558.     ret
  559.  
  560.  
  561. kesu_ms:        ;mouse の信号が 0になるまで待つ
  562.     M_KESUMS
  563.  
  564. dd_pal:
  565.     call sub_edx
  566.     dw    0
  567.  
  568. look_me:
  569.      call sub_esi         ; esi 固定です。
  570.      dd 0,0
  571.      dw     1    ; ここが 1 の物は open start です。
  572.          dw      0
  573.          dw  33*6,70,256+120,256+150,15,0,0,0
  574.  
  575.  
  576.  
  577. boxdt:
  578.     call sub_edi                               ; edi 固定です。
  579.         dw    6,32,32,1,1,33,0,11,15,0
  580.         dw    2,20,20,1,40,21,0,15,0,0
  581.  
  582.  
  583. boxdt3:
  584.     call sub_edi
  585.         dw    1,33*6-5,20,1,40,21,0,15,0,0
  586.  
  587. boxdt2:
  588.     call sub_edi
  589.         dw    1,33*6-47,20,7+40,40,21,0,15,0,0
  590.  
  591. boxdt1:
  592.     call sub_edi
  593.         dw    2,20,20,1,40,21,0,15,0,0
  594.  
  595.  
  596. icon1:
  597.     call sub_edi
  598.     dw    0,1,1,1,33,0,250,108,168,0
  599.  
  600.  
  601. mozidt:
  602.     call sub_edi
  603.            dw    0        ;screen_no
  604.            dw    15      ; mozi_color
  605.            dw    7      ; 書き出し位置  x
  606.            dw    38      ;          y
  607.            dw    25      ; next offset x
  608.            dw    0      ; next offset y
  609.     
  610.                dw   2      ; gyo suu
  611.                    db    '0',0
  612.                    db    '1',0
  613.                 dw 0,0
  614.  
  615. mozidt1:
  616.     call sub_edi
  617.            dw    0        ;screen_no
  618.            dw    15      ; mozi_color
  619.            dw    7+41      ; 書き出し位置  x
  620.            dw    38      ;          y
  621.            dw    25      ; next offset x
  622.            dw    0      ; next offset y
  623.     
  624.                dw   1      ; gyo suu
  625.                    db    'を書き換えます',0
  626.                 dw 0,0
  627.  
  628. mozidt2:
  629.     call sub_edi
  630.            dw    0        ;screen_no
  631.            dw    15      ; mozi_color
  632.            dw    7      ; 書き出し位置  x
  633.            dw    38      ;          y
  634.            dw    25      ; next offset x
  635.            dw    0      ; next offset y
  636.     
  637.                dw   1      ; gyo suu
  638.                    db    '前のノートは消えます',0
  639.                 dw 0,0
  640. mozidt3:
  641.     call sub_edi
  642.            dw    0        ;screen_no
  643.            dw    15      ; mozi_color
  644.            dw    7+41      ; 書き出し位置  x
  645.            dw    38      ;          y
  646.            dw    25      ; next offset x
  647.            dw    0      ; next offset y
  648.     
  649.                dw   1      ; gyo suu
  650.                    db    ' パレットページです',0
  651.                 dw 0,0
  652.  
  653.  
  654. ; [count][sz_x][sz_y][off_x][off_y][+x][+y][f_col][b_col][s_no]
  655.  
  656. ;--------------------------------
  657.  
  658. palon0:
  659.  
  660.     mov    dx,0448h    ; video output controler I/O address
  661.     mov    al,01b        ; select priority register
  662.     out    dx,al
  663.  
  664. ;R 448 al=1
  665. ; プライオリティレジスタ
  666.  
  667.     mov    dx,044Ah    ; video output controler I/O data
  668.     mov    al,00001000b    ; layer 0 pallet use
  669.     out    dx,al        ; forground layer 0
  670.  
  671.     ret
  672.  
  673. ;****************************************
  674. palon1:
  675.  
  676.     mov    dx,0448h    ; video output controler I/O address
  677.     mov    al,01b        ; select priority register
  678.     out    dx,al
  679.  
  680.     mov    dx,044Ah    ; video output controler I/O data
  681.     mov    al,00101000b    ; layer 1 pallet, forground layer 0
  682.     out    dx,al
  683.     
  684.     ret
  685.  
  686. ;****************************************************
  687.     
  688.     ;画面0 のパレット獲得
  689.  
  690. pal0_get:
  691.  
  692.     call ds_pal0
  693.     mov edi,esi
  694.  
  695.     push ds
  696.     pop es
  697.  
  698.     mov    ecx,16
  699.  
  700. p_get0:
  701.     mov al,16
  702.     sub al,cl
  703.     call    getpal        ; set pallet
  704.  
  705.     loop    p_get0
  706.  
  707.     ret
  708.  
  709. ;*****************************************
  710.  
  711.     ; 画面1のパレットGET
  712.     
  713.  
  714. pal1_get:
  715.  
  716.     call ds_pal1        ;mov    esi,offset paldat1
  717.     mov edi,esi
  718.  
  719.     push ds
  720.     pop es
  721.     
  722.  
  723.     mov    ecx,16            ;paldat1N
  724.  
  725. p_get1:
  726.  
  727.     mov al,16
  728.     sub al,cl
  729.  
  730.     call    getpal        ; set pallet
  731.     loop    p_get1
  732.  
  733.     ret
  734.  
  735.  
  736. ;*****************************************
  737.  
  738.     ; buf を パレットレジスタにset
  739.     
  740.  
  741. pal0_set:
  742.  
  743.     call ds_pal0
  744.     mov    ecx,16            ;paldat1N
  745.  
  746. p_set1:
  747.  
  748.     mov al,16
  749.     sub al,cl
  750.  
  751.     call    setpal        ; set pallet
  752.     loop    p_set1
  753.  
  754.     ret
  755.  
  756.  
  757.  
  758. ;*******************************
  759. ; setpal : set pallet data
  760. ;
  761. ; in : (ds:esi) = data address
  762. ;     al = pal no.
  763. ; use: dx
  764. ;
  765.  
  766. setpal:
  767.  
  768.     mov    dx,0FD90h    ; pallet code
  769.     out    dx,al           ; al=pal no.
  770.  
  771.     mov    dx,0FD92h    ; blue pallet data
  772.     outsb
  773.     mov    dx,0FD94h    ; red pallet data
  774.     outsb
  775.     mov    dx,0FD96h    ; green pallet data
  776.     outsb
  777.  
  778.     ret
  779.  
  780. ;**************************************
  781.  
  782. getpal:
  783.  
  784.     mov    dx,0FD90h    ; pallet code
  785.     out dx,al
  786.  
  787.     mov    dx,0FD92h    ; blue pallet data
  788.     insb
  789.  
  790.     mov    dx,0FD94h    ; red pallet data
  791.     insb
  792.  
  793.     mov    dx,0FD96h    ; green pallet data
  794.     insb
  795.  
  796.     ret
  797.  
  798. ;-------------
  799. ds_pal0:
  800.     call sub_esi
  801.     db 3*17 dup (0)
  802.  
  803. ds_pal1:
  804.     call sub_esi
  805.     db 3*17 dup (0)
  806.  
  807.  
  808.  
  809. ;********************
  810.  
  811. ;    パレットノートを初期化する
  812. ;    ds_pal0 に パレットデータが有ること
  813. ;    es 使用 
  814.  
  815. b_note:            ;パレットノートの初期化
  816.  
  817.     mov ebx,64    ; 転送回数
  818.     mov edx,16*3    ;パレット色数
  819.     mov ecx,16*3
  820.  
  821.     mov ax,114h    ;スプライト セレクタ
  822.     mov es,ax
  823.     mov edi,0    ;転送先 offset
  824.     cld
  825.  
  826. b_note1:
  827.  
  828.     call ds_pal0    ;esi=pal data head
  829.  
  830.     rep movsb            
  831.  
  832.     mov ecx,edx
  833.  
  834.     dec ebx
  835.  
  836.     cmp ebx,0
  837.     jne b_note1
  838.  
  839.     push ds
  840.     pop es
  841.  
  842.     mov    dx,114h
  843.     mov    edi,0
  844.     mov    ah,100
  845.     mov    al,32        ;パレットノートの有る番地
  846.     call    komei
  847.  
  848.     ret
  849.  
  850. ;-------------------------------
  851. from_note:
  852.  
  853.     call dd_pal        ;ページデータ
  854.  
  855.     movzx eax,word ptr [edx]
  856.  
  857.     mov ebx,3*16
  858.  
  859.     mul ebx
  860.  
  861.     mov edi,eax        ;edi = page 
  862.  
  863.  
  864.     call ds_pal1
  865.     xchg esi,edi
  866.  
  867.     push ds
  868.     mov ax,114h
  869.     mov ds,ax
  870.  
  871.     mov ecx,16*3
  872.     rep movsb
  873.  
  874.     pop ds
  875.  
  876.     ret
  877. ;*****************************************
  878. to_note:
  879.  
  880.     call dd_pal
  881.  
  882.     movzx eax,word ptr [edx]
  883.  
  884.     mov ebx,3*16
  885.  
  886.     mul ebx
  887.  
  888.     mov edi,eax        ;edi = page 
  889.  
  890.  
  891.     call ds_pal1
  892.  
  893.  
  894.     mov ax,114h
  895.     mov es,ax
  896.     cld
  897.     mov ecx,16*3
  898.     rep movsb
  899.  
  900.     push ds
  901.     pop es
  902.  
  903.     ret
  904.  
  905.  
  906. ds_ma:
  907.     call sub_esi
  908.     dw    0
  909.  
  910.  
  911.  
  912.